/**
 * StateMachineNavigator.java
 * Copyright (C) 2009 Jose Mauro da Silva Sandy
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */

package utils;

import java.io.*;
import java.util.ArrayList;
import javax.swing.JButton;

/**
 *
 * @author jmsandy
 */
public class StateMachineNavigator {
    //<editor-fold defaultstate="collapsed" desc="Constants">
    public static final int PADRAO         = 0;
    public static final int PRIMEIRO       = 1;
    public static final int ULTIMO         = 2;
    public static final int PROXIMO_MENOR  = 3;
    public static final int PROXIMO_MAIOR  = 4;
    public static final int ANTERIOR_MENOR = 5;
    public static final int ANTERIOR_MAIOR = 6;
    //</editor-fold>

    /**
     * Atualiza o status de uma lista de botoes de acordo com o status corrente.
     * Deve ser passado uma lista de botoes na seguinte estrutura:
     * 1o: Primeiro
     * 2o: Anterior
     * 3o: Proximo
     * 4o: Ultimo
     * @param lstButton - lista de botoes que tera seu estado modificado
     * @param state - estado atual do botao
     */
    public static void changeState(ArrayList<JButton> lstButton, int state)
                                                        throws IOException{
        switch(state){
            // <editor-fold defaultstate="collapsed" desc="ESTADO PADRAO - 0">
            case StateMachineNavigator.PADRAO:{
                JButton button = new JButton();
                button = lstButton.get(0);
                button.setEnabled(false);

                button = new JButton();
                button = lstButton.get(1);
                button.setEnabled(false);

                button = new JButton();
                button = lstButton.get(2);
                button.setEnabled(false);

                button = new JButton();
                button = lstButton.get(3);
                button.setEnabled(false);
                break;
            }
            //</editor-fold>
            // <editor-fold defaultstate="collapsed" desc="ESTADO PRIMEIRO - 1">
            case StateMachineNavigator.PRIMEIRO:{
                JButton button = new JButton();
                button = lstButton.get(0);
                button.setEnabled(false);

                button = new JButton();
                button = lstButton.get(1);
                button.setEnabled(false);

                button = new JButton();
                button = lstButton.get(2);
                button.setEnabled(true);

                button = new JButton();
                button = lstButton.get(3);
                button.setEnabled(true);
                break;
            }
            //</editor-fold>
            // <editor-fold defaultstate="collapsed" desc="ESTADO ULTIMO - 2">
            case StateMachineNavigator.ULTIMO:{
                JButton button = new JButton();
                button = lstButton.get(0);
                button.setEnabled(true);

                button = new JButton();
                button = lstButton.get(1);
                button.setEnabled(true);

                button = new JButton();
                button = lstButton.get(2);
                button.setEnabled(false);

                button = new JButton();
                button = lstButton.get(3);
                button.setEnabled(false);
                break;
            }
            //</editor-fold>
            // <editor-fold defaultstate="collapsed" desc="ESTADO P_MENOR - 3">
            case StateMachineNavigator.PROXIMO_MENOR:{
                JButton button = new JButton();
                button = lstButton.get(0);
                button.setEnabled(true);

                button = new JButton();
                button = lstButton.get(1);
                button.setEnabled(true);

                button = new JButton();
                button = lstButton.get(2);
                button.setEnabled(false);

                button = new JButton();
                button = lstButton.get(3);
                button.setEnabled(false);
                break;
            }
            //</editor-fold>
            // <editor-fold defaultstate="collapsed" desc="ESTADO P_MAIOR - 4">
            case StateMachineNavigator.PROXIMO_MAIOR:{
                JButton button = new JButton();
                button = lstButton.get(0);
                button.setEnabled(true);

                button = new JButton();
                button = lstButton.get(1);
                button.setEnabled(true);

                button = new JButton();
                button = lstButton.get(2);
                button.setEnabled(true);

                button = new JButton();
                button = lstButton.get(3);
                button.setEnabled(true);
                break;
            }
            //</editor-fold>
            // <editor-fold defaultstate="collapsed" desc="ESTADO A_MENOR - 5">
            case StateMachineNavigator.ANTERIOR_MENOR:{
                JButton button = new JButton();
                button = lstButton.get(0);
                button.setEnabled(false);

                button = new JButton();
                button = lstButton.get(1);
                button.setEnabled(false);

                button = new JButton();
                button = lstButton.get(2);
                button.setEnabled(true);

                button = new JButton();
                button = lstButton.get(3);
                button.setEnabled(true);
                break;
            }
            //</editor-fold>
            // <editor-fold defaultstate="collapsed" desc="ESTADO A_MAIOR - 6">
            case StateMachineNavigator.ANTERIOR_MAIOR:{
                JButton button = new JButton();
                button = lstButton.get(0);
                button.setEnabled(true);

                button = new JButton();
                button = lstButton.get(1);
                button.setEnabled(true);

                button = new JButton();
                button = lstButton.get(2);
                button.setEnabled(true);

                button = new JButton();
                button = lstButton.get(3);
                button.setEnabled(true);
                break;
            }
            //</editor-fold>
        }
    }
}
